/**
 * author      : dormi330
 * date        : 2018/6/27
 * project     : mybatis
 * description : TODO
 */

package com.deep.trade.domain.order;

import com.github.pagehelper.PageInfo;

import java.util.List;

public interface OrderQueryRepository {

    // ================== 从数据库中重建 ===================

    /**
     * 查询单个 TradeOrder
     */
    TradeOrder tradeOrderOfId(String tradeOrderId);

    TradeOrder fulfilTradeOrderSku(TradeOrder tradeOrder);

    TradeOrder fulfilDeliveryAddress(TradeOrder tradeOrder);

    // ================== 从数据库中重建 ===================


    /**
     * 查询单个 OrderSummary
     */
    OrderSummary orderSummaryOfId(String orderSummaryId);

    /**
     * 分页查询 orderSummary
     */
    PageInfo<OrderSummary> orderSummaryOfMember(String memberId, int pageNum, int pageSize);

    /**
     * 查询 OrderSummary 的所有 TradeOrder
     */
    List<TradeOrder> tradeOderOfOrderSummary(String orderSummaryId);

    /**
     * 分页查询, 会员的所有订单
     */
    PageInfo<TradeOrder> tradeOrderOfMember(String memberId, int pageNum, int pageSize);

    /**
     * 分页查询, 租户的所有订单
     */
    PageInfo<TradeOrder> tradeOrderOfTenant(int pageNum, int pageSize);

    /**
     * 根据 租户 + tradeOrder , 查询订单的所属sku 列表
     */
    List<TradeOrderSku> orderSkuOfTradeOrder(String tradeOrderId);

    /**
     * 根据 租户 + tradeOrder ID list , 查询订单的所属sku 列表
     */
    List<TradeOrderSku> orderSkuOfTradeOrderList(List<String> tradeOrderIdList);

    /**
     * 根据 租户 + tradeOrder , 查询 TradeOrder 的 收货地址信息
     */
    DeliveryAddress orderDeliveryOfTradeOrder(String tradeOrderId);

    /**
     * 根据 租户 + tradeOrder , 查询 TradeOrder 的 的支付信息
     */
    OrderPayment paymentOfTradeOrder(String tradeOrderId);

    /**
     * 根据 租户 + tradeOrderId , 查询包裹信息
     */
    List<OrderParcel> parcelListOfOrder(String tradeOrderId);

}
